package com.yunxi.module.infra.mapper.file;

import com.yunxi.framework.common.pojo.PageResult;
import com.yunxi.framework.mybatis.core.mapper.BaseMapperX;
import com.yunxi.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.yunxi.module.infra.model.file.FileConfigDO;
import com.yunxi.module.infra.vo.admin.file.config.FileConfigPageReqVO;
import org.apache.ibatis.annotations.Mapper;

/**
 * <p>
 * 文件配置 Mapper
 * </p>
 *
 * @author lidy
 * @since 2024-05-18
 */
@Mapper
public interface FileConfigMapper extends BaseMapperX<FileConfigDO> {

    /**
     * 获得文件 master 客户端
     *
     * @return 文件客户端
     */
    default FileConfigDO selectByMaster() {
        return selectOne(FileConfigDO::getMaster, true);
    }

    /**
     * 获得文件配置分页列表
     *
     * @param pageReqVO 分页查询参数
     * @return 文件配置分页列表
     */
    default PageResult<FileConfigDO> selectPage(FileConfigPageReqVO pageReqVO) {
        return selectPage(pageReqVO, new LambdaQueryWrapperX<FileConfigDO>()
                .likeIfPresent(FileConfigDO::getName, pageReqVO.getName())
                .eqIfPresent(FileConfigDO::getStorage, pageReqVO.getStorage())
                .betweenIfPresent(FileConfigDO::getCreateTime, pageReqVO.getCreateTime())
                .orderByDesc(FileConfigDO::getId));
    }
}
